class Solution1 {
    public String reverseWords(String s) {
        int l = 0;
        int r = s.length()-1;
        //删除两端空格
        while(s.charAt(l) == ' '){
            l++;
        }
          while(s.charAt(r) == ' '){
            r--;
        }

        StringBuilder str = new StringBuilder();
        while(l <= r){
            int index = r;
            while(s.charAt(index) != ' ' && index >= l){
                index--;
            }
            int i  = index+1;//因为此时index 指向了‘ ’;
            while(i <= r){
                str.append(s.charAt(i));
                i++;
            }
            //判断：最后一个单词不添加' ';
            if (index > l){
                str.append(" ");//添加' ';
            }
            r = index;//记录下一个单词开始位置
            
        }
        return str.toString();
    }

    public static void main(String[] args) {

    }
}



/*
151. 反转字符串中的单词
 */
class Solution {
    public String reverseWords(String s) {
        char[] ch = s.toCharArray();
        int l = 0;
        int r = s.length()-1;
        //删除两端' '
        while(ch[l] == ' '){
            l++;
        }
        while(ch[r] == ' '){
            r--;
        }

        StringBuilder str = new StringBuilder();

        while(l <= r){
            int index = r;
            //遍历从后开始第一个单词到' '处
            while(index>=l&&ch[index] != ' '){
                index--;
            }

            //此时index指向' ';
            for (int i = index+1;i<=r;i++){
                str.append(ch[i]);
            }
            //最后一个单词不加' ';
            if (index > l){
                str.append(" ");
            }

            //跳过中间' '
            while(index>l && ch[index] == ' '){
                index--;
            }

            //从下一个单词开始
            r = index;
        }
        return str.toString();
    }
}
